/*
 * Libro.fx
 *
 * Created on 17/04/2009, 18:45:49
 */

package webooksfx.model;

/**
 * @author matias
 */
public class Libro {
    public var id : String;
    public var isbn : String;
    public var autores : String[];
    public var titulo : String;
    public var editorial : String;
    public var img_mini : String;
    public var url_detalle : String;

    public var descripcion : String;
    public var fecha : String;
    public var cant_paginas : String;
    public var img_detalle : String;

    override function toString() {
        return "\{id: \"{id}\", isbn: \"{isbn}\", titulo: \"{titulo}\", editorial: \"{editorial}\", img_mini: \"{img_mini}\", url_detalle: \"{url_detalle}\", descripcion: \"{descripcion}\", fecha: \"{fecha}\", cant_paginas: \"{cant_paginas}\", img_detalle: \"{img_detalle}\"\}";
    }

    public function addAutor (name : String) : Void {
        if (name != "")
            insert name into autores
    }

	public function getIsbn() : String {
		if (isbn == "") {
			return "-";
		}
		return isbn;
	}

	function hasMoreNAutor(n: Integer) : Boolean {
		if (sizeof autores > n) {
			return true;
		}
		return false;
	}

	public function hasMoreOneAutor() : Boolean {
		return hasMoreNAutor(1);
	}

	public function getAutores(title: Boolean) : String {
		var res: String = "";
		if (sizeof autores > 1) {
			if (title) {
				res = "Autores: ";
			}
			for (i in [0.. sizeof autores - 1]) {
				res += if (i != sizeof autores - 1) "{autores[i]}, " else "{autores[i]}";
			}
		}
		else {
			if (title) {
				res = "Autor: ";
			}
			res += "{autores[0]}";
		}
        return res;
	}
	public function getAutores(title: Boolean, length: Integer) : String {
		return this.cortarString(this.getAutores(title), length);
	}

	public function getAutoresDetalle(length: Integer) : String {
		if (hasMoreNAutor(0)) {
			return getAutores(false, length);
		}
		return "-";
	}

	public function getTitulo(length: Integer) : String {
		return this.cortarString(titulo, length);
	}

	public function getEditorial(length: Integer) : String {
		var aux_editorial: String = editorial;
		if (aux_editorial == "") {
			aux_editorial = "-"
		}
		return this.cortarString(aux_editorial, length);
	}

	public function getDescripcion() : String {
		if (descripcion == "") {
			return "No disponible.";
		}
		return descripcion;
	}

	public function getFecha() : String {
		if (fecha == "") {
			return fecha;
		}
		return "-/-/-";
	}

	public function getCantPaginas() : String {
		if (cant_paginas == "") {
			return "-";
		}
		return cant_paginas;
	}

	function cortarString (cadena: String, length: Integer) : String {
		var res: String = cadena;
		if (res.length() > length) {
			res = "{res.substring(0, length)}...";
		}
		return res;
	}
}
